package com.phpxiu.app.avlive;


import android.content.Context;

import com.phpxiu.app.controller.avcontroller.QavsdkControl;
import com.phpxiu.app.model.MySelfInfo;
import com.phpxiu.app.model.list.C2CConversation;
import com.tencent.TIMCallBack;
import com.tencent.TIMManager;
import com.tencent.TIMMessage;
import com.tencent.TIMMessageListener;
import com.tencent.TIMUser;

import java.util.List;
import java.util.Observable;
import java.util.concurrent.ConcurrentHashMap;

/**
 * @file
 * @brief 直播管理--被观察者
 * @author 吴金洲
 * @note 1.会话管理。2.消息接收、分发处理.3.创建音视频房间，4.加入音视频房间。5.视频互动管理。
 *
 */
public class LiveManager extends Observable {

    public final static int NONE=-1;//无角色

    public final static int HOST=0;//主播

    public final static int MEMBER=1;//观众

    /**
     * 应用程序内容
     */
    private Context mContext;
    /**
     * 通讯管理实例
     */
    private volatile static LiveManager manager;

    /**
     * 直播角色：-1无角色，0主播，1观众;
     */
    private int role=NONE;

    /**
     * 服务端未退出聊天室
     */
    private boolean isInChatRoom=false;

    /**
     * 服务端未退出视频房间
     */
    private boolean isInAVRoom=false;

    /**
     * 获取直播管理单例
     * @return
     */
    public static LiveManager getInstance(){
        if (manager == null) {
            synchronized (LiveManager.class) {
                if (manager == null) {
                    manager = new LiveManager();
                }
            }
        }
        return manager;
    }

    /**
     * 初始化
     * @param context 应用程序
     */
    public void init(Context context){
        mContext=context;
        TIMManager.getInstance().init(context);
    }

    /**
     * 通知观察者，更新数据
     * @param data
     */
    public void onContentChange(Object data){
        setChanged();
        notifyObservers(data);
    }

    /**
     * 创建直播
     */
    public void createLive(){

    }

    /**
     * 加入直播
     */
    public void joinLive(){

    }

    private void startAudioService(){
        QavsdkControl.getInstance().getAVContext().getAudioCtrl().startTRAEService();
    }

    private void stopAudioService(){
        QavsdkControl.getInstance().getAVContext().getAudioCtrl().stopTRAEService();
    }

    /**
     *退出聊天室成功
     */
    private void onQuitChatRoomSuccess(){
        isInChatRoom=false;
    }

    /**
     *退出视频房间成功
     */
    private void onQuitAVRoomSuccess(){
        isInAVRoom=false;
    }

}
